#include "consulta_compras.h"
#define CREDITO "crédito"
#define CONTADO "contado"
#define PENDIENTE "pendiente"
#define REALIZADA "realizada"
#define PROVEEDOR "Proveedor"
#define FECHA "Fecha"
#define NUMERO_FACTURA "Nro. de Factura"
#define TIPO_PAGO "Tipo de Pago"


Consulta_compras::Consulta_compras(QWidget *parent) :
    VentanaConsulta(parent)
{
    indiceBusqueda=0;
    this->setWindowTitle("Consultar Compras");
    ui->checkActivos->setChecked(false);

    modeloConsulta->setTable("compra");

    modeloConsulta->setRelation(2, QSqlRelation("proveedor", "id_proveedor", "nombre"));
    modeloConsulta->setHeaderData(1, Qt::Horizontal, "Fecha");
    modeloConsulta->setHeaderData(2, Qt::Horizontal, "Proveedor");
    modeloConsulta->setHeaderData(3, Qt::Horizontal, "Nro. Factura");
    modeloConsulta->setHeaderData(4, Qt::Horizontal, "Tipo de pago");
    modeloConsulta->setHeaderData(5, Qt::Horizontal, "Estado");
    modeloConsulta->setHeaderData(6, Qt::Horizontal, "% IVA");
    modeloConsulta->setHeaderData(7, Qt::Horizontal, "Total IVA");
    modeloConsulta->setHeaderData(8, Qt::Horizontal, "% Descuento");
    modeloConsulta->setHeaderData(9, Qt::Horizontal, "Total Descuento");
    modeloConsulta->setHeaderData(10, Qt::Horizontal, "Importe Total");

    modeloConsulta->select();

    filtro->setSourceModel(modeloConsulta);
    ui->tableView->setModel(filtro);

    QStringList elementos;
    elementos << PROVEEDOR << FECHA << NUMERO_FACTURA << TIPO_PAGO;
    ui->comboBuscarPor->addItems(elementos);
    ui->tableView->setModel(filtro);
    ui->tableView->hideColumn(0);
    ui->textoBusqueda->setPlaceholderText(PROVEEDOR);

    ui->checkActivos->setText("Mostrar solo compras pendientes");
    ui->modificar->setText("Ver detalle");
    ui->eliminar->setVisible(false);

}

void Consulta_compras::on_registrar_clicked()
{
    Reg_mod_compra *registro = new Reg_mod_compra();
    registro->exec();
    modeloConsulta->select();
    delete registro;
}

void Consulta_compras::on_modificar_clicked()
{
    QModelIndexList indexes = ui->tableView->selectionModel()->selection().indexes();
    if(indexes.count() > 0)
    {
        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);
        int id = ui->tableView->model()->data(index).toInt();

        QDjangoQuerySet<Compra> compras;
        Compra *compra = compras.filter(QDjangoWhere("id_compra", QDjangoWhere::Equals, id)).at(0);

        Reg_mod_compra *registro = new Reg_mod_compra(this,compra);
        registro->exec();
        modeloConsulta->select();
        delete registro;
        delete compra;
    }
    else
    {
        cuadroMensaje("Ninguna compra seleccionada", "Debe seleccionar una compra a editar", "error");
    }
}

void Consulta_compras::on_textoBusqueda_textChanged(const QString &arg1)
{
    filtro->beginDeclareFilter();
    filtro->setFilter(indiceBusqueda, QVariant(arg1), Qt::DisplayRole, Qt::MatchContains);
    filtro->endDeclareFilter();
}

void Consulta_compras::on_comboBuscarPor_currentTextChanged(const QString &arg1)
{
    //"Proveedor" << "Fecha" << "Número de Factura" << "Tipo de Pago";
     ui->textoBusqueda->setPlaceholderText(arg1);
    if(arg1 == PROVEEDOR) indiceBusqueda = 2;
    else if (arg1 == FECHA) indiceBusqueda  = 1;
    else if(arg1 == NUMERO_FACTURA) indiceBusqueda = 3;
    else if(arg1 == TIPO_PAGO) indiceBusqueda = 4;
}

void Consulta_compras::on_refrescarTabla_clicked()
{
    for(int i=0;i<ui->tableView->model()->columnCount()-1;i++){
        filtro->removeFilter(i);
    }
    ui->comboBuscarPor->setCurrentIndex(0);
}

void Consulta_compras::on_checkActivos_toggled(bool checked)
{
    if (checked)
    {
        filtro->beginDeclareFilter();
        filtro->setFilter(5, QVariant(PENDIENTE), Qt::DisplayRole, Qt::MatchExactly);
        filtro->endDeclareFilter();
    }
    else
    {
       filtro->removeFilter(5);
    }
}

void Consulta_compras::on_tableView_doubleClicked()
{
    Consulta_compras::on_modificar_clicked();
}

#undef CONTADO
#undef CREDITO
#undef PENDIENTE
#undef REALIZADA
#undef PROVEEDOR
#undef FECHA
#undef NUMERO_FACTURA
#undef TIPO_PAGO
